En esta hoja de trabajo se generaran dos modelos de redes neuronales que sean capaces de clasificar usando la variable de respuesta que categoriza las casas en baratas, medias y caras. Estos modelos tendran diferentes topologias y funciones de activacion. Estos modelos se utilizaran para predecir la variable de respuesta. Asimismo, se realizaran las matrices de confucion y se compararan los resultados. Seguido de esto, se realizara el mismo proceso pero para la variable SalesPrice, de manera que el algoritmo prediga el precio de las casas.
Inicialmente se separan los datos cuantitativos. En base a las hojas realizadas anteriormente, se decidio por descartar las variables que tienen mucha correlacion entre si y asi facilitar la creacion de los modelos.
A continuacion se muestra el modelo generado con caret:
## Neural Network
##
## 1005 samples
## 37 predictor
##
## Pre-processing: scaled (37), centered (37)
## Resampling: Bootstrapped (25 reps)
## Summary of sample sizes: 1005, 1005, 1005, 1005, 1005, 1005, ...
## Resampling results across tuning parameters:
##
## size decay RMSE Rsquared MAE
## 1 0e+00 0.2900616 0.8661209 0.2131192
## 1 1e-04 0.2712488 0.8852121 0.2007247
## 1 1e-01 0.2702672 0.8856105 0.2037176
## 3 0e+00 0.3275482 0.8354253 0.1280640
## 3 1e-04 0.3627589 0.8064277 0.1649435
## 3 1e-01 0.2688875 0.8872097 0.1707850
## 5 0e+00 0.4225275 0.7703499 0.1786598
## 5 1e-04 0.3573536 0.8131785 0.1669553
## 5 1e-01 0.3065245 0.8553780 0.2046365
##
## RMSE was used to select the optimal model using the smallest value.
## The final values used for the model were size = 3 and decay = 0.1.
Para generar el modelo se aplico el parametro de preProcess. Este nos ayudo a centrar y escalar la data. Es decir, se normalizaron todas las columnas y sus registros para que no haya disparidad en el entrenamiento del modelo y en las predicciones.
Seguido de esto vemos la prediccion y su matriz de confusion:
## Confusion Matrix and Statistics
##
##
## 2 3 1
## 2 134 11 8
## 3 7 112 0
## 1 9 0 150
##
## Overall Statistics
##
## Accuracy : 0.9188
## 95% CI : (0.8889, 0.9428)
## No Information Rate : 0.3666
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.8774
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 2 Class: 3 Class: 1
## Sensitivity 0.8933 0.9106 0.9494
## Specificity 0.9324 0.9773 0.9670
## Pos Pred Value 0.8758 0.9412 0.9434
## Neg Pred Value 0.9424 0.9647 0.9706
## Prevalence 0.3480 0.2854 0.3666
## Detection Rate 0.3109 0.2599 0.3480
## Detection Prevalence 0.3550 0.2761 0.3689
## Balanced Accuracy 0.9129 0.9439 0.9582
Tiempo de ejecucion:
## user system elapsed
## 0.02 0.00 0.02
Dado que el algoritmo retornaba valores entre 0 y 3 debimos redondear estos numeros para que calleran dentro de una de nuestras clasificaciones de tipo de casa (1, 2, 3).
A continuacion se muestra el modelo generado con NNet, en donde se realizo un entrenamiento con un maximo de 300 iteraciones:
## # weights: 976
## initial value 5003.405243
## iter 10 value 640.282903
## iter 20 value 639.380869
## iter 30 value 639.058012
## final value 639.046340
## converged
Tiempo de ejecucion:
## user system elapsed
## 0.02 0.00 0.02
Es importante recalcar que se realizaron unicamente 300 iteraciones, dado que de realizarse mas se podria caer en overfiting, y no se desea eso.
Seguido de esto vemos la prediccion y su matriz de confusion:
## Confusion Matrix and Statistics
##
##
## 2 3 1
## 2 150 122 158
## 3 0 1 0
## 1 0 0 0
##
## Overall Statistics
##
## Accuracy : 0.3503
## 95% CI : (0.3053, 0.3975)
## No Information Rate : 0.3666
## P-Value [Acc > NIR] : 0.7727
##
## Kappa : 0.0038
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 2 Class: 3 Class: 1
## Sensitivity 1.000000 0.00813 0.0000
## Specificity 0.003559 1.00000 1.0000
## Pos Pred Value 0.348837 1.00000 NaN
## Neg Pred Value 1.000000 0.71628 0.6334
## Prevalence 0.348028 0.28538 0.3666
## Detection Rate 0.348028 0.00232 0.0000
## Detection Prevalence 0.997680 0.00232 0.0000
## Balanced Accuracy 0.501779 0.50407 0.5000
En este caso comparando ambos modelos de clasificación podemos determinar que el mejor fue el obtenido por la librería Caret debido a que nos de una accuray mucho más alta a la librería NNet.
En el caso de la librería Nnet son mucho más complicado poder ajustar la Red neuronal y los layers correspondientes para poder tener una accuracy mucho más adecuada ya que con los mismos valores utilizados con librería de Caret son mucho más complicado obtener un accuracy si alto.
Este segundo modelo tiene un nivel de producción bastante más bajo y no fue tan efectivo, como lo podemos observar como se comporta en la matriz la confusión.
Debajo tenemos una grafica comparativa del Accuracy obtenido de los modelos utilizados para las predicciones:
Al predecir el valor de SalePrice nos vemos con otro nivel de dificultad, ya que debemos hacer una prediccion de multiples valores discretos. Para ello optamos por normalizar la data mediante el metodo de normalizacion Min-Max. Este metodo de normalizacion convierte cada valor en un rango entre 0 y 1. Para ello se aplica la siguiente formula: x’=(x-min(x))/(max(x)-min(x)). Luego de entrenar el modelo con la data normalizada se tuvo que desnormalizar para luego calcular el porcentage de error de cada prediccion. El porcentage de error se obtuvo de la siguiente manera: (|aprox-real|/real)*100.
Finalmente se hizo un promedio de todos los porcentajes de error restados de 1 para obtener la precision de nuestro modelo.
A continuacion vemos el accuracy promedio de las predicciones de SalePrice con NNet:
## [1] 91.40342
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.366 88.997 93.593 91.591 97.189 99.979
Al comparar los resultados obtenidos con los diferentes modelos de clasificacion usando redes neuronales para estimar la variable de respuesta “tipoDeCasa” podemos ver que las redes neuronales realizadas por la librería de Caret fueron las más efectivas con un 85.85% de precision y con una diferencia de 0.24% respecto a las formas por la librería NNet con una presicion de 85.61%. No se puede determinar qué modelo es el mejor, pero sí qué modelo nos dio mejores resultados, y fue el modelo de redes neuronales con Caret. Siendo este el modelo más efectivo, ahora partiendo del tiempo de ejecución podemos decir que ambos algoritmos demoraron lo mismo. Ahora en comparación con los otros modelos que se realizaron en hojas de trabajo anteriores, podemos también determinar que en esta hoja de trabajo obtuvo los índices de accuracy más altos a los que se ha llegado. Asimis, se obtuvieron los tiempos de ejecucion mas cortos.
En conclusión como se menciona anteriormente no se pudo determinar un modelo ganador ya que si se tuviera un conocimiento más amplio el tema de cada uno de los modelos que se realizaron. Posiblemente se hubiera tratado de una manera más delicada a cada variable que influye en el resultado de cada modelo, en otras palabras consideramos que se pudo haber probado miles de combinaciones por modelo(las cuales no se probaron por cuestiones de tiempo) y tener más conocimiento para poder determinar qué modelo es más eficiente para esta base de datos y en este caso en particular.Se puede resaltar que ningún algoritmo tuvo una efectividad baja o menor al 70% dentro de todos los algoritmos utilizados, sin embargo, las redes neuronales fueron mucho más efectivas para realizar la prediccion. Aunque como se menciono anteriormente, no podemos decir con certeza si los otros algoritmos no pueden mejorar su efectividad.
Por último al probar con otro modelo la variable evaluar fue el Sale price, en este caso se utilizó el precio para poder determinar como sea la producción cambiando el tipo de topología o función de qué decir utilizada. En este caso tenemos una función de tipo entero a diferencia de el modelo anterior que se utilizaba con 01 para poder determinar la pertenencia cada grupo.
Lugo, al comparar los resultados obtenidos con los modelos de clasificacion usando redes neuronales para estimar la variable de respuesta “SalePrice” podemos ver que el modelo de red neuronal realizado con Caret es mas “efectivo” con un 93.59% de efectividad mientras que el modelo con NNet obtuvo un 91.40%. En la grafica anterior se compara la dispersion de datos entre las predicciones de Caret y NNet. Aqui se aprecia como los datos predecidos por el modelo de NNet estan mas dispersos que los de Caret, causando que el promedio en su efectividad sea menor. En ambas ocaciones, el modelo de red neuronal con mejor desempeño fue utilizando Caret. Uno de los factores que pudo influir es la funcion de activacion que se utilizá por defecto que es la sigmoide. Otro de los factores que pueden influir es la manera en la que se normalizan los datos.